//
//  WBBaseViewController.swift
//  Weibo
//
//  Created by eju_wangzhenxing on 16/11/4.
//  Copyright © 2016年 qisitianxia. All rights reserved.
//

import UIKit

class WBBaseViewController: UIViewController {
    
    //用户登录标记
    fileprivate var userLogon = false
    
    var talbeView: UITableView?
    // 刷新控件
    var refreshControl: UIRefreshControl?
    
    var isPullUp = false
    
    // 自定义导航条目
    lazy var navigationBar = UINavigationBar.init(frame: CGRect.init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 64))
    // 自定义的导航项
    lazy var navItem = UINavigationItem()
        
    override var title: String? {
        didSet {
            navItem.title = title
        }
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()

        setUpUI()
    }
    
    // 加载数据
    @objc func laodData() {
        refreshControl?.endRefreshing()
    }
}

extension WBBaseViewController {
    
    func setUpUI() {
        
        view.backgroundColor = UIColor.white
        
        // 取消自动缩进 -> 如果隐藏了导航栏，会缩进20个点
        automaticallyAdjustsScrollViewInsets = false
        
        setUpNavBar()
        
        userLogon ? setUpTableView() : setUpVisitorView()
    }
    
    // 设置表格视图
    private func setUpTableView() {
        
        talbeView = UITableView.init(frame: view.bounds, style: .plain)
        
        view.insertSubview(talbeView!, belowSubview: navigationBar)
        
        // 设置数据源&代理 -> 让子类直接实现数据源方法
        talbeView?.delegate = self
        talbeView?.dataSource = self
        
        // 设置内容缩进
        talbeView?.contentInset = UIEdgeInsets.init(top: navigationBar.bounds.height, left: 0, bottom: tabBarController?.tabBar.bounds.height ?? 49, right: 0)
        
        // 设置刷新控件
        refreshControl = UIRefreshControl()
        talbeView?.addSubview(refreshControl!)
        
        refreshControl?.addTarget(self, action: #selector(laodData), for: .valueChanged)
    }
    
    //设置访客视图
    private func setUpVisitorView() {
        
        let visitorView = WBVistorView.init(frame: view.bounds)
        
        visitorView.backgroundColor = UIColor.white
        
        view.insertSubview(visitorView, belowSubview: navigationBar)
    }
    
    private func setUpNavBar() {
        navigationBar.items = [navItem]
        
        navigationBar.barTintColor = #colorLiteral(red: 0.9719446301, green: 0.9719673991, blue: 0.9719551206, alpha: 1)
        
        view.addSubview(navigationBar)
        
        //设置navBar 字体颜色
        navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.darkGray]
    }
}

// extension 不能添加属性，也不能重写父类的方法，只是对类的扩展,扩展里边的方法是可以重写的
extension WBBaseViewController: UITableViewDataSource,UITableViewDelegate {
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    // 基类只是准备方法，子类负责具体的实现
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
    
    // 在显示最后一行的时候 做上拉刷新
    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        
        // 1,判断是否是最后一行
        let row = indexPath.row
        
        
        let section = tableView.numberOfSections - 1
        
        if section < 0 || row < 0 {
            return
        }
        
        let count = tableView.numberOfRows(inSection: section)
        
        if row == (count - 1) && !isPullUp {
            print("上拉刷新")
            isPullUp = true
            
            //开始刷新
            laodData()
            
            self.talbeView?.reloadData()
        }
    }
}
